Next: File Locks, Previous: Reading from Files, Up: Files [Contents][Index]
You can write the contents of a buffer, or part of a buffer,
directly to a file on disk using the append-to-file
and write-region functions. Don’t use these
functions to write to files that are being visited; that could
cause confusion in the mechanisms for visiting.
This function appends the contents of the region delimited
by start and end in the current buffer
to the end of file filename. If that file does not
exist, it is created. This function returns
nil.
An error is signaled if filename specifies a nonwritable file, or a nonexistent file in a directory where files cannot be created.
When called from Lisp, this function is completely equivalent to:
(write-region start end filename t)
This function writes the region delimited by start and end in the current buffer into the file specified by filename.
If start is nil, then the command
writes the entire buffer contents (not just the
accessible portion) to the file and ignores
end.
If start is a string, then
write-region writes or appends that string,
rather than text from the buffer. end is ignored
in this case.
If append is non-nil, then the
specified text is appended to the existing file contents (if
any). If append is a number,
write-region seeks to that byte offset from the
start of the file and writes the data from there.
If mustbenew is non-nil, then
write-region asks for confirmation if
filename names an existing file. If
mustbenew is the symbol excl, then
write-region does not ask for confirmation, but
instead it signals an error file-already-exists
if the file already exists.
The test for an existing file, when mustbenew
is excl, uses a special system feature. At least
for files on a local disk, there is no chance that some other
program could create a file of the same name before Emacs
does, without Emacs’s noticing.
If visit is t, then Emacs
establishes an association between the buffer and the file:
the buffer is then visiting that file. It also sets the last
file modification time for the current buffer to
filename’s modtime, and marks the buffer as
not modified. This feature is used by
save-buffer, but you probably should not use it
yourself.
If visit is a string, it specifies the file
name to visit. This way, you can write the data to one file
(filename) while recording the buffer as visiting
another file (visit). The argument
visit is used in the echo area message and also
for file locking; visit is stored in
buffer-file-name. This feature is used to
implement file-precious-flag; don’t use it
yourself unless you really know what you’re doing.
The optional argument lockname, if
non-nil, specifies the file name to use for
purposes of locking and unlocking, overriding
filename and visit for that
purpose.
The function write-region converts the data
which it writes to the appropriate file formats specified by
buffer-file-format and also calls the functions
in the list write-region-annotate-functions. See
Format
Conversion.
Normally, write-region displays the message
‘Wrote filename’ in the
echo area. This message is inhibited if visit is
neither t nor nil nor a string, or
if Emacs is operating in batch mode (see Batch Mode). This feature is
useful for programs that use files for internal purposes,
files that the user does not need to know about.
The with-temp-file macro evaluates the
body forms with a temporary buffer as the current
buffer; then, at the end, it writes the buffer contents into
file file. It kills the temporary buffer when
finished, restoring the buffer that was current before the
with-temp-file form. Then it returns the value
of the last form in body.
The current buffer is restored even in case of an abnormal
exit via throw or error (see Nonlocal Exits).
See also with-temp-buffer in The
Current Buffer.
Next: File Locks, Previous: Reading from Files, Up: Files [Contents][Index]